package com.momo.apachedoris.dao.vo;

import lombok.Data;

/**
 * @Author: Jie Li
 * @Date 2022-04-10 12:05
 * @Description: 用户无法手动取消 Stream Load，Stream Load 在超时或者导入错误后会被系统自动取消
 * 应用场景
 * Stream Load 的最佳使用场景是原始文件在内存中或者存储在本地磁盘中。其次由于 Stream Load 是一种同步的导入方式，
 * 所以用户如果希望用同步方式获取导入结果，也可以使用这种导入。
 * @Version: 1.0
 * <p>Copyright: Copyright (c) 2022</p >
 **/
@Data
public class StreamLoadVO {

    //导入的事务ID。用户可不感知。
    private String TxnId;
    //导入任务的标签，相同标签的数据无法多次导入。用户可以通过指定Label的方式来避免一份数据重复导入的问题。当前StarRocks系统会保留最近30分钟内成功完成的任务的Label。
    //导入Label，如果没有指定，则系统会生成一个 UUID
    private String Label;
    //导入最后的状态。 Success：表示导入成功，数据已经可见。
    //Publish Timeout：表述导入作业已经成功Commit，但是由于某种原因并不能立即可见。用户可以视作已经成功不必重试导入。
    //Label Already Exists：表明该Label已经被其他作业占用，可能是导入成功，也可能是正在导入。
    //其他：此次导入失败，用户可以指定Label重试此次作业。
    private String Status;
    //已存在的 Label 对应的导入作业的状态。
    //这个字段只有在当 Status 为 "Label Already Exists" 是才会显示。
    // 用户可以通过这个状态，知晓已存在 Label 对应的导入作业的状态。"RUNNING" 表示作业还在执行，"FINISHED" 表示作业成功。
    private String ExistingJobStatus;
    //导入状态的详细说明。失败时会返回具体的失败原因。
    private String Message;
    //从数据流中读取到的总行数。
    private String NumberTotalRows;
    // 此次导入的数据行数，只有在Success时有效。
    private String NumberLoadedRows;
    //此次导入过滤掉的行数，即数据质量不合格的行。
    private String NumberFilteredRows;
    //此次导入，通过 where 条件被过滤掉的行数。
    private String NumberUnselectedRows;
    //此次导入的源文件数据量大小。
    private String LoadBytes;
    // 此次导入所用的时间(ms)。
    private String LoadTimeMs;
    //被过滤数据的具体内容，仅保留前1000条。如果导入任务失败，可以直接用以下方式获取被过滤的数据，并进行分析，以调整导入任务。
    private String ErrorURL;
    //向 FE 请求开始一个事务所花费的时间，单位毫秒。
    private String BeginTxnTimeMs;
    //向 FE 请求获取导入数据执行计划所花费的时间，单位毫秒。
    private String StreamLoadPutTimeMs;
    //读取数据所花费的时间，单位毫秒。
    private String ReadDataTimeMs;
    //执行写入数据操作所花费的时间，单位毫秒。
    private String WriteDataTimeMs;
    //向Fe请求提交并且发布事务所花费的时间，单位毫秒。
    private String CommitAndPublishTimeMs;
    private String TwoPhaseCommit;
}
